home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_mhlib.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  11KB  |  380 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. '''
  5.    Tests for the mhlib module
  6.    Nick Mathewson
  7. '''
  8. import unittest
  9. from test.test_support import run_unittest, TESTFN, TestSkipped
  10. import os
  11. import StringIO
  12. import sys
  13. import mhlib
  14. if sys.platform.startswith('win') and sys.platform == 'riscos' or sys.platform.startswith('atheos'):
  15.     raise TestSkipped('skipped on %s -- ' % sys.platform + 'too many Unix assumptions')
  16.  
  17. _mhroot = TESTFN + '_MH'
  18. _mhpath = os.path.join(_mhroot, 'MH')
  19. _mhprofile = os.path.join(_mhroot, '.mh_profile')
  20.  
  21. def normF(f):
  22.     return os.path.join(*f.split('/'))
  23.  
  24.  
  25. def writeFile(fname, contents):
  26.     dir = os.path.split(fname)[0]
  27.     if dir and not os.path.exists(dir):
  28.         mkdirs(dir)
  29.     
  30.     f = open(fname, 'w')
  31.     f.write(contents)
  32.     f.close()
  33.  
  34.  
  35. def readFile(fname):
  36.     f = open(fname)
  37.     r = f.read()
  38.     f.close()
  39.     return r
  40.  
  41.  
  42. def writeProfile(dict):
  43.     contents = [ '%s: %s\n' % (k, v) for k, v in dict.iteritems() ]
  44.     writeFile(_mhprofile, ''.join(contents))
  45.  
  46.  
  47. def writeContext(folder):
  48.     folder = normF(folder)
  49.     writeFile(os.path.join(_mhpath, 'context'), 'Current-Folder: %s\n' % folder)
  50.  
  51.  
  52. def writeCurMessage(folder, cur):
  53.     folder = normF(folder)
  54.     writeFile(os.path.join(_mhpath, folder, '.mh_sequences'), 'cur: %s\n' % cur)
  55.  
  56.  
  57. def writeMessage(folder, n, headers, body):
  58.     folder = normF(folder)
  59.     headers = []([ '%s: %s\n' % (k, v) for k, v in headers.iteritems() ])
  60.     contents = '%s\n%s\n' % (headers, body)
  61.     mkdirs(os.path.join(_mhpath, folder))
  62.     writeFile(os.path.join(_mhpath, folder, str(n)), contents)
  63.  
  64.  
  65. def getMH():
  66.     return mhlib.MH(os.path.abspath(_mhpath), _mhprofile)
  67.  
  68.  
  69. def sortLines(s):
  70.     lines = s.split('\n')
  71.     lines = _[1]
  72.     lines.sort()
  73.     return lines
  74.  
  75.  
  76. def mkdirs(fname):
  77.     if os.path.exists(fname) or fname == '':
  78.         return None
  79.     
  80.     (base, file) = os.path.split(fname)
  81.     mkdirs(base)
  82.     os.mkdir(fname)
  83.  
  84.  
  85. def deltree(fname):
  86.     if not os.path.exists(fname):
  87.         return None
  88.     
  89.     for f in os.listdir(fname):
  90.         fullname = os.path.join(fname, f)
  91.         if os.path.isdir(fullname):
  92.             deltree(fullname)
  93.             continue
  94.         
  95.         try:
  96.             os.unlink(fullname)
  97.         continue
  98.         continue
  99.  
  100.     
  101.     
  102.     try:
  103.         os.rmdir(fname)
  104.     except:
  105.         pass
  106.  
  107.  
  108.  
  109. class MhlibTests(unittest.TestCase):
  110.     
  111.     def setUp(self):
  112.         deltree(_mhroot)
  113.         mkdirs(_mhpath)
  114.         writeProfile({
  115.             'Path': os.path.abspath(_mhpath),
  116.             'Editor': 'emacs',
  117.             'ignored-attribute': 'camping holiday' })
  118.         writeMessage('inbox', 1, {
  119.             'From': 'Mrs. Premise',
  120.             'To': 'Mrs. Conclusion',
  121.             'Date': '18 July 2001' }, 'Hullo, Mrs. Conclusion!\n')
  122.         writeMessage('inbox', 2, {
  123.             'From': 'Mrs. Conclusion',
  124.             'To': 'Mrs. Premise',
  125.             'Date': '29 July 2001' }, 'Hullo, Mrs. Premise!\n')
  126.         for i in range(5, 101) + range(101, 201, 2):
  127.             writeMessage('wide', i, {
  128.                 'From': 'nowhere',
  129.                 'Subject': 'message #%s' % i }, 'This is message number %s\n' % i)
  130.         
  131.         
  132.         def deep(folder, n):
  133.             writeMessage(folder, n, {
  134.                 'Subject': 'Message %s/%s' % (folder, n) }, 'This is message number %s in %s\n' % (n, folder))
  135.  
  136.         deep('deep/f1', 1)
  137.         deep('deep/f1', 2)
  138.         deep('deep/f1', 3)
  139.         deep('deep/f2', 4)
  140.         deep('deep/f2', 6)
  141.         deep('deep', 3)
  142.         deep('deep/f2/f3', 1)
  143.         deep('deep/f2/f3', 2)
  144.  
  145.     
  146.     def tearDown(self):
  147.         deltree(_mhroot)
  148.  
  149.     
  150.     def test_basic(self):
  151.         writeContext('inbox')
  152.         writeCurMessage('inbox', 2)
  153.         mh = getMH()
  154.         eq = self.assertEquals
  155.         eq(mh.getprofile('Editor'), 'emacs')
  156.         eq(mh.getprofile('not-set'), None)
  157.         eq(mh.getpath(), os.path.abspath(_mhpath))
  158.         eq(mh.getcontext(), 'inbox')
  159.         mh.setcontext('wide')
  160.         eq(mh.getcontext(), 'wide')
  161.         eq(readFile(os.path.join(_mhpath, 'context')), 'Current-Folder: wide\n')
  162.         mh.setcontext('inbox')
  163.         inbox = mh.openfolder('inbox')
  164.         eq(inbox.getfullname(), os.path.join(os.path.abspath(_mhpath), 'inbox'))
  165.         eq(inbox.getsequencesfilename(), os.path.join(os.path.abspath(_mhpath), 'inbox', '.mh_sequences'))
  166.         eq(inbox.getmessagefilename(1), os.path.join(os.path.abspath(_mhpath), 'inbox', '1'))
  167.  
  168.     
  169.     def test_listfolders(self):
  170.         mh = getMH()
  171.         eq = self.assertEquals
  172.         folders = mh.listfolders()
  173.         folders.sort()
  174.         eq(folders, [
  175.             'deep',
  176.             'inbox',
  177.             'wide'])
  178.         folders = mh.listallfolders()
  179.         folders.sort()
  180.         tfolders = map(normF, [
  181.             'deep',
  182.             'deep/f1',
  183.             'deep/f2',
  184.             'deep/f2/f3',
  185.             'inbox',
  186.             'wide'])
  187.         tfolders.sort()
  188.         eq(folders, tfolders)
  189.         folders = mh.listsubfolders('deep')
  190.         folders.sort()
  191.         eq(folders, map(normF, [
  192.             'deep/f1',
  193.             'deep/f2']))
  194.         folders = mh.listallsubfolders('deep')
  195.         folders.sort()
  196.         eq(folders, map(normF, [
  197.             'deep/f1',
  198.             'deep/f2',
  199.             'deep/f2/f3']))
  200.         eq(mh.listsubfolders(normF('deep/f2')), [
  201.             normF('deep/f2/f3')])
  202.         eq(mh.listsubfolders('inbox'), [])
  203.         eq(mh.listallsubfolders('inbox'), [])
  204.  
  205.     
  206.     def test_sequence(self):
  207.         mh = getMH()
  208.         eq = self.assertEquals
  209.         writeCurMessage('wide', 55)
  210.         f = mh.openfolder('wide')
  211.         all = f.listmessages()
  212.         eq(all, range(5, 101) + range(101, 201, 2))
  213.         eq(f.getcurrent(), 55)
  214.         f.setcurrent(99)
  215.         eq(readFile(os.path.join(_mhpath, 'wide', '.mh_sequences')), 'cur: 99\n')
  216.         
  217.         def seqeq(seq, val):
  218.             eq(f.parsesequence(seq), val)
  219.  
  220.         seqeq('5-55', range(5, 56))
  221.         seqeq('90-108', range(90, 101) + range(101, 109, 2))
  222.         seqeq('90-108', range(90, 101) + range(101, 109, 2))
  223.         seqeq('10:10', range(10, 20))
  224.         seqeq('10:+10', range(10, 20))
  225.         seqeq('101:10', range(101, 121, 2))
  226.         seqeq('cur', [
  227.             99])
  228.         seqeq('.', [
  229.             99])
  230.         seqeq('prev', [
  231.             98])
  232.         seqeq('next', [
  233.             100])
  234.         seqeq('cur:-3', [
  235.             97,
  236.             98,
  237.             99])
  238.         seqeq('first-cur', range(5, 100))
  239.         seqeq('150-last', range(151, 201, 2))
  240.         seqeq('prev-next', [
  241.             98,
  242.             99,
  243.             100])
  244.         lowprimes = [
  245.             5,
  246.             7,
  247.             11,
  248.             13,
  249.             17,
  250.             19,
  251.             23,
  252.             29]
  253.         lowcompos = _[1]
  254.         f.putsequences({
  255.             'cur': [
  256.                 5],
  257.             'lowprime': lowprimes,
  258.             'lowcompos': lowcompos })
  259.         seqs = readFile(os.path.join(_mhpath, 'wide', '.mh_sequences'))
  260.         seqs = sortLines(seqs)
  261.         eq(seqs, [
  262.             'cur: 5',
  263.             'lowcompos: 6 8-10 12 14-16 18 20-22 24-28 30',
  264.             'lowprime: 5 7 11 13 17 19 23 29'])
  265.         seqeq('lowprime', lowprimes)
  266.         seqeq('lowprime:1', [
  267.             5])
  268.         seqeq('lowprime:2', [
  269.             5,
  270.             7])
  271.         seqeq('lowprime:-2', [
  272.             23,
  273.             29])
  274.  
  275.     
  276.     def test_modify(self):
  277.         mh = getMH()
  278.         eq = self.assertEquals
  279.         mh.makefolder('dummy1')
  280.         self.assert_('dummy1' in mh.listfolders())
  281.         path = os.path.join(_mhpath, 'dummy1')
  282.         self.assert_(os.path.exists(path))
  283.         f = mh.openfolder('dummy1')
  284.         
  285.         def create(n):
  286.             msg = 'From: foo\nSubject: %s\n\nDummy Message %s\n' % (n, n)
  287.             f.createmessage(n, StringIO.StringIO(msg))
  288.  
  289.         create(7)
  290.         create(8)
  291.         create(9)
  292.         eq(readFile(f.getmessagefilename(9)), 'From: foo\nSubject: 9\n\nDummy Message 9\n')
  293.         eq(f.listmessages(), [
  294.             7,
  295.             8,
  296.             9])
  297.         files = os.listdir(path)
  298.         files.sort()
  299.         eq(files, [
  300.             '7',
  301.             '8',
  302.             '9'])
  303.         f.removemessages([
  304.             '7',
  305.             '8'])
  306.         files = os.listdir(path)
  307.         files.sort()
  308.         eq(files, [
  309.             ',7',
  310.             ',8',
  311.             '9'])
  312.         eq(f.listmessages(), [
  313.             9])
  314.         create(10)
  315.         create(11)
  316.         create(12)
  317.         mh.makefolder('dummy2')
  318.         f2 = mh.openfolder('dummy2')
  319.         eq(f2.listmessages(), [])
  320.         f.movemessage(10, f2, 3)
  321.         f.movemessage(11, f2, 5)
  322.         eq(f.listmessages(), [
  323.             9,
  324.             12])
  325.         eq(f2.listmessages(), [
  326.             3,
  327.             5])
  328.         eq(readFile(f2.getmessagefilename(3)), 'From: foo\nSubject: 10\n\nDummy Message 10\n')
  329.         f.copymessage(9, f2, 4)
  330.         eq(f.listmessages(), [
  331.             9,
  332.             12])
  333.         eq(readFile(f2.getmessagefilename(4)), 'From: foo\nSubject: 9\n\nDummy Message 9\n')
  334.         f.refilemessages([
  335.             9,
  336.             12], f2)
  337.         eq(f.listmessages(), [])
  338.         eq(f2.listmessages(), [
  339.             3,
  340.             4,
  341.             5,
  342.             6,
  343.             7])
  344.         eq(readFile(f2.getmessagefilename(7)), 'From: foo\nSubject: 12\n\nDummy Message 12\n')
  345.         mh.deletefolder('dummy1')
  346.         mh.deletefolder('dummy2')
  347.         self.assert_('dummy1' not in mh.listfolders())
  348.         self.assert_(not os.path.exists(path))
  349.  
  350.     
  351.     def test_read(self):
  352.         mh = getMH()
  353.         eq = self.assertEquals
  354.         f = mh.openfolder('inbox')
  355.         msg = f.openmessage(1)
  356.         eq(msg.getheader('From'), 'Mrs. Premise')
  357.         eq(msg.getheader('To'), 'Mrs. Conclusion')
  358.         lines = sortLines(msg.getheadertext())
  359.         eq(lines, [
  360.             'Date: 18 July 2001',
  361.             'From: Mrs. Premise',
  362.             'To: Mrs. Conclusion'])
  363.         lines = sortLines(msg.getheadertext((lambda h: len(h) == 4)))
  364.         eq(lines, [
  365.             'Date: 18 July 2001',
  366.             'From: Mrs. Premise'])
  367.         eq(msg.getbodytext(), 'Hullo, Mrs. Conclusion!\n\n')
  368.         eq(msg.getbodytext(0), 'Hullo, Mrs. Conclusion!\n\n')
  369.         msg.fp.close()
  370.         del msg
  371.  
  372.  
  373.  
  374. def test_main():
  375.     run_unittest(MhlibTests)
  376.  
  377. if __name__ == '__main__':
  378.     test_main()
  379.  
  380.